package com.hzw.saas.api.chat;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.gson.JsonObject;
import com.hzw.saas.api.chat.bo.ChatEventBO;
import com.hzw.saas.api.chat.bo.LatestMsgBO;
import com.hzw.saas.api.chat.query.ChatEventQuery;
import com.hzw.saas.common.config.util.PageParam;
import io.netty.channel.ChannelHandlerContext;

import java.util.ArrayList;
import java.util.List;

public interface IChatEventService {
    /**
     * 根据用户id查询用户制定群组的近期的聊天记录
     *
     * @param pageParam
     * @param userId
     * @return
     */
    IPage<ChatEventBO>findHistoryByUserId(String userId, String groupId, PageParam pageParam);

    /**
     * 根据用户id查询近期聊天记录
     *
     * @param userId
     * @param pageParam
     * @return
     */
    IPage<ChatEventBO> findLatestMsg(String userId, PageParam pageParam);

    /**
     * 新增好友事件
     * @param userId
     * @param friendId
     */
    String addFriendEvent(String userId,String friendId);

    /**
     * 找出指定目标人的指定事件
     * @param chatEventQuery
     * @return
     */
    List<ChatEventBO> findChatEventByTargetId(ChatEventQuery chatEventQuery);

    /**
     * 新增事件通用接口
     * @param chatEventBO
     */
    void addEvent(ChatEventBO chatEventBO);

    /**
     * 批量新增事件
     * @param chatEventBOS
     */
    void saveBatch(ArrayList<ChatEventBO> chatEventBOS);

    /**
     * 发送消息事件
     * @param chatEventBO
     */
    void sendMsgEvent(ChatEventBO chatEventBO);

    /**
     * 拒绝加群事件
     * @param chatEventBO
     */
    void refuseEvent(ChatEventBO chatEventBO);

    /**
     * 发起申请事件
     * @param chatEventBO
     */
    void buildCommand(ChatEventBO chatEventBO);

    void makeSource();
}
